#!/bin/bash

# 1. パスの設定
RESOURCE_DIR=$(cd "$(dirname "$0")"; pwd)
CONTENTS_DIR=$(dirname "$RESOURCE_DIR")
GS_EXEC="$RESOURCE_DIR/gs_universal"

# 2. 実行中のGSのバージョンを取得 (例: 10.06.0)
GS_VERSION=$("$GS_EXEC" --version 2>/dev/null)

# 3. そのバージョンに一致するフォルダを優先的に探す
if [ -d "$CONTENTS_DIR/$GS_VERSION" ]; then
    GS_VER_DIR="$CONTENTS_DIR/$GS_VERSION"
else
    # 見つからない場合は従来通り最初に見つかった数字フォルダを使う
    GS_VER_DIR=$(ls -d "$CONTENTS_DIR"/[0-9]* 2>/dev/null | head -n 1)
fi

# 4. GS_LIBの設定
if [ -n "$GS_VER_DIR" ]; then
    export GS_LIB="$GS_VER_DIR/Resource/Init:$GS_VER_DIR/Resource:$GS_VER_DIR/lib:$GS_VER_DIR/kanji"
fi

# 3. フォントパスの追加（埋め込み・アウトライン化の安定性向上）
export GS_FONTPATH="$GS_FONTPATH:/Library/Fonts:/System/Library/Fonts"

# 4. gs実行ファイルの存在と実行権限の確認
if [ ! -e "$GS_EXEC" ]; then
  echo "エラー: Ghostscript 実行ファイルが見つかりません: $GS_EXEC"
  exit 1
fi

chmod +x "$GS_EXEC" || {
  echo "エラー: $GS_EXEC に実行権限を付与できませんでした"
  exit 1
}

processed=0
failed=0

for f in "$@"
do
    if [ ! -f "$f" ]; then
      continue
    fi

    processed=$((processed + 1))

    dir=$(dirname "$f")
    filename=$(basename "$f")
    base="${filename%.*}"

    # 新しいファイル名： 元の名前_OL_300.pdf
    outfile="$dir/${base}_OL_300.pdf"
    echo "処理中: $filename ..."

    # Ghostscript実行：アウトライン化 + 300ppi制限
    "$GS_EXEC" -sDEVICE=pdfwrite \
               -dCompatibilityLevel=1.3 \
               -dPDFSETTINGS=/prepress \
               -dNOPAUSE -dQUIET -dBATCH \
               -dNoOutputFonts=true \
               -dColorImageDownsampleType=/Bicubic \
               -dColorImageResolution=300 \
               -dGrayImageDownsampleType=/Bicubic \
               -dGrayImageResolution=300 \
               -dMonoImageDownsampleType=/Bicubic \
               -dMonoImageResolution=300 \
               -dDownsampleColorImages=true \
               -dDownsampleGrayImages=true \
               -dDownsampleMonoImages=true \
               -sOutputFile="$outfile" \
               "$f"

    if [ $? -eq 0 ]; then
        echo "完了: $outfile"
    else
        echo "エラー: $filename の変換に失敗しました"
        failed=$((failed + 1))
    fi
done

# 完了通知（全て成功したときだけ）
if [ "$processed" -gt 0 ] && [ "$failed" -eq 0 ]; then
  echo "文字のアウトラインと最大画像を300ppiへの変換が完了しました"
  echo "元ファイルと同じ場所に「元ファイル名_OL_300.pdf」として保存しました。"
  osascript -e 'display notification "アウトライン・300ppi変換が完了しました" with title "PDF Reconstructor"'
  echo "--- 全ての処理が終了しました ---"
else
  if [ "$processed" -eq 0 ]; then
    echo "エラー: 処理対象のファイルがありませんでした"
  else
    echo "エラー: $failed 件の変換に失敗しました（完了通知は表示しません）"
  fi
  echo "--- 処理が終了しました ---"
  exit 1
fi